package com.ruoyi.system.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.WebDeptProduct;
import com.ruoyi.system.domain.WebDeptProductLog;
import com.ruoyi.system.mapper.WebDeptProductLogMapper;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.IWebDeptProductLogService;
import com.ruoyi.system.service.IWebDeptProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;

/**
 * 出入库记录Service业务层处理
 * 
 * @author wsliupan@126.com
 * @date 2021-08-18
 */
@Service
public class WebDeptProductLogServiceImpl extends ServiceImpl<WebDeptProductLogMapper, WebDeptProductLog> implements IWebDeptProductLogService
{
    @Autowired
    private WebDeptProductLogMapper webDeptProductLogMapper;
    @Autowired
    private IWebDeptProductService iWebDeptProductService;
    @Autowired
    private ISysDeptService iSysDeptService;
    /**
     * 查询出入库记录
     * 
     * @param id 出入库记录ID
     * @return 出入库记录
     */
    @Override
    public WebDeptProductLog selectWebDeptProductLogById(Long id)
    {
        return webDeptProductLogMapper.selectWebDeptProductLogById(id);
    }

    /**
     * 查询出入库记录列表
     * 
     * @param webDeptProductLog 出入库记录
     * @return 出入库记录
     */
    @Override
    @DataScope(deptAlias = "t1")
    public List<WebDeptProductLog> selectWebDeptProductLogList(WebDeptProductLog webDeptProductLog)
    {
        return webDeptProductLogMapper.selectWebDeptProductLogList(webDeptProductLog);
    }

    /**
     * 新增出入库记录
     * 
     * @param webDeptProductLog 出入库记录
     * @return 结果
     */
    @Override
    @Transactional
    public int insertWebDeptProductLog(WebDeptProductLog webDeptProductLog)
    {
        webDeptProductLog.setCreateTime(DateUtils.getNowDate());
        webDeptProductLog.setComment("门店入库");
        WebDeptProduct webDeptProduct = iWebDeptProductService.getById(webDeptProductLog.getProductId());
        if(webDeptProduct !=  null){
            webDeptProductLog.setProductName(webDeptProduct.getName());
        }
        SysDept sysDept = iSysDeptService.selectDeptById(webDeptProductLog.getDeptId());
        if(sysDept != null){
            webDeptProductLog.setDeptName(sysDept.getDeptName());
        }

        webDeptProduct.setStock(new BigDecimal(webDeptProduct.getStock()+"").add(new BigDecimal(webDeptProductLog.getNumber()+"")).longValue());
        iWebDeptProductService.saveOrUpdate(webDeptProduct);

        return webDeptProductLogMapper.insert(webDeptProductLog);
    }

    /**
     * 修改出入库记录
     * 
     * @param webDeptProductLog 出入库记录
     * @return 结果
     */
    @Override
    public boolean updateWebDeptProductLog(WebDeptProductLog webDeptProductLog)
    {
        //webDeptProductLog.setUpdateTime(DateUtils.getNowDate());
        //return webDeptProductLogMapper.updateWebDeptProductLog(webDeptProductLog);


        return this.saveOrUpdate(webDeptProductLog);
    }

    /**
     * 删除出入库记录对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public boolean deleteWebDeptProductLogByIds(String ids)
    {
        //return webDeptProductLogMapper.deleteWebDeptProductLogByIds(Convert.toStrArray(ids));
        return this.removeByIds(Arrays.asList(Convert.toStrArray(ids)));
    }

    /**
     * 删除出入库记录信息
     * 
     * @param id 出入库记录ID
     * @return 结果
     */
    @Override
    public boolean deleteWebDeptProductLogById(Long id)
    {
        //return webDeptProductLogMapper.deleteWebDeptProductLogById(id);
        return this.removeById(id);
    }
}
